package com.share.tool.generator.code_mybatis;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 *  System.out.println(System.getProperty("user.dir"));不同环境执行路径不一样
 *  因此所有项目的配置文件最好放在resources目录下最可靠
 *
 * 备注：使用main方法生成时，在idea环境是无法执行的会报错，
 * idea的错误信息 The specified target project directory src/main/resources does not exist
 * 解决方法 mybatis-generator-schedule.xml中src/main/resources和 src/main/java必须指定绝对路径
 *
 * 在eclipse中是可以的
 *
 * @author 01401061 - 孙艳强
 * @date 2020/10/29 19:51
 */
public class MainMybatis {
    public static void main(String[] args) throws Exception {
        String xml = "mybatis-generator-schedule.xml";

        List<String> warnings = new ArrayList<String>();
        String configFile = MainMybatis.class.getClassLoader().getResource(xml).getFile(); /*web项目获取的方式*/
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(new File(configFile));
        DefaultShellCallback callback = new DefaultShellCallback(true);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
        if (warnings.isEmpty()) {
            System.out.println("代码生成成功");
        } else {
//            mybatis generator出现异常不是抛出，而是进行捕获放在传入warnings（List）里面
            System.err.println("生产失败，错误信息如下：");
            for (String tmp : warnings) {
                System.out.println(tmp);
            }
        }
    }
}
